<script>
  // 给定一个 n 个元素有序的（升序）整型数组 nums 和一个目标值 target  ，写一个函数搜索 nums 中的 target，如果目标值存在返回下标，否则返回 -1。

  // 来源：力扣（LeetCode）
  // 链接：https://leetcode.cn/problems/binary-search

  // 示例 1:

  // 输入: nums = [-1,0,3,5,9,12], target = 9
  // 输出: 4
  // 解释: 9 出现在 nums 中并且下标为 4
  // 示例 2:

  // 输入: nums = [-1,0,3,5,9,12], target = 2
  // 输出: -1
  // 解释: 2 不存在 nums 中因此返回 -1


  /**
   * 判断中点 是否大于 target 满足 在左半区查找
   * 判断重点 是否小于 target 满足 在右边区查找
   * 找到返回mid
   * 没有返回 -1
   */

  /**
   * @param {number[]} nums
   * @param {number} target
   * @return {number}
   */
  var search = function (nums, target) {
    let l = 0,
      r = nums.length - 1;
    while (l <= r) {
      let mid = ((l + r) / 2) | 0;
      if (nums[mid] > target) {
        r = mid - 1;
      } else if (nums[mid] < target) {
        l = mid + 1;
      } else {
        return mid;
      }
    }
    return -1;
  };
</script>
